<?php

Class CondutorSecundarioDAO{
    
    public function cadastrarCondutorSecundario(CondutorSecundario $condutorSecundario) {
        
        try {

            //Banco de dados
            $conexao = new Conexao();
            $conn = $conexao->abrirConexao();

            //Codigo SQL
            $query = "
                INSERT INTO condutor_secundario (id, relacao_segurado, nome, cpf,
                    data_nascimento, estado_civil, sexo, data_primeira_habilitacao, 
                    dias_dirige, reside_com_condutor) 
                VALUES (NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?);
            ";
            
            //converter datas
            $data = new Utilitarios();
            $dataNascimento = $data->ConverteDataBanco($condutorSecundario->getDataNascimento());
            $dataHabilitacao = $data->ConverteDataBanco($condutorSecundario->getDataPrimeiraHabilitacao());
                        
            //Cadastro
            $stmt = $conn->prepare($query);
            $stmt->bindValue(1, utf8_decode($condutorSecundario->getRelacaoSecundario()));
            $stmt->bindValue(2, utf8_decode($condutorSecundario->getNome()));
            $stmt->bindValue(3, utf8_decode($condutorSecundario->getCpf()));
            $stmt->bindValue(4, $dataNascimento);
            $stmt->bindValue(5, utf8_decode($condutorSecundario->getEstadoCivil()));
            $stmt->bindValue(6, utf8_decode($condutorSecundario->getSexo()));
            $stmt->bindValue(7, $dataHabilitacao);
            $stmt->bindValue(8, utf8_decode($condutorSecundario->getDiasDirigi()));
            $stmt->bindValue(9, utf8_decode($condutorSecundario->getResideCondutor()));
            $stmt->execute();

            $idCondutorSecundario = $conn->lastInsertId();
            $conn = $conexao->fecharConexao();
            
            return $idCondutorSecundario;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
            return false;
        }
        
    }
    
    public function editarCondutorSecundario($idCondutorSecundario, CondutorSecundario $condutorSecundario) {
        
        try {

            //Banco de dados
            $conexao = new Conexao();
            $conn = $conexao->abrirConexao();

            //Codigo SQL
            $query = "
                UPDATE condutor_secundario SET relacao_segurado = ?, nome = ?, cpf = ?,
                    data_nascimento = ?, estado_civil = ?, sexo = ?, data_primeira_habilitacao = ?, 
                    dias_dirige = ?, reside_com_condutor = ? WHERE id = $idCondutorSecundario;
            ";
            
            
            
            //converter datas
            $data = new Utilitarios();
            $dataNascimento = $data->ConverteDataBanco($condutorSecundario->getDataNascimento());
            $dataHabilitacao = $data->ConverteDataBanco($condutorSecundario->getDataPrimeiraHabilitacao());

            //Cadastro
            $stmt = $conn->prepare($query);
            $stmt->bindValue(1, utf8_decode($condutorSecundario->getRelacaoSecundario()));
            $stmt->bindValue(2, utf8_decode($condutorSecundario->getNome()));
            $stmt->bindValue(3, utf8_decode($condutorSecundario->getCpf()));
            $stmt->bindValue(4, $dataNascimento);
            $stmt->bindValue(5, utf8_decode($condutorSecundario->getEstadoCivil()));
            $stmt->bindValue(6, utf8_decode($condutorSecundario->getSexo()));
            $stmt->bindValue(7, $dataHabilitacao);
            $stmt->bindValue(8, utf8_decode($condutorSecundario->getDiasDirigi()));
            $stmt->bindValue(9, utf8_decode($condutorSecundario->getResideCondutor()));
            $stmt->execute();

            $idCondutorSecundario = $conn->lastInsertId();
            $conn = $conexao->fecharConexao();
            
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
            return false;
        }
        
    }
    
    public function selecionarCondutorSecundario($idcondutorSecundario) {
        
        try {

            //Banco de dados
            $conexao = new Conexao();
            $conn = $conexao->abrirConexao();

            //Codigo SQL
            $result = $conn->query("SELECT * FROM  condutor_secundario WHERE id = $idcondutorSecundario");

            foreach ($result as $value) {
                //Recupera valores dos seguros
                $condutorSecundario = new CondutorSecundario();
                $condutorSecundario->setIdCondutorSecundario($value['id']);
                $condutorSecundario->setRelacaoSecundario($value['relacao_segurado']);
                $condutorSecundario->setNome($value['nome']);
                $condutorSecundario->setCpf($value['cpf']);
                $condutorSecundario->setDataNascimento($value['data_nascimento']);
                $condutorSecundario->setEstadoCivil($value['estado_civil']);
                $condutorSecundario->setSexo($value['sexo']);
                $condutorSecundario->setDataPrimeiraHabilitacao($value['data_primeira_habilitacao']);
                $condutorSecundario->setDiasDirigi($value['dias_dirige']);
                $condutorSecundario->setResideCondutor($value['reside_com_condutor']);
            }

            $conn = $conexao->fecharConexao();
            return $condutorSecundario;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
        
    }
    
    public function listarCondutorSecundario($idVeiculo) {
        
        try {

            //Banco de dados
            $conexao = new Conexao();
            $conn = $conexao->abrirConexao();

            //Codigo SQL
            $result = $conn->query("
                SELECT condutor_secundario.id, condutor_secundario.relacao_segurado, condutor_secundario.nome, 
                condutor_secundario.cpf, condutor_secundario.data_nascimento, condutor_secundario.sexo,
                condutor_secundario.estado_civil, condutor_secundario.data_primeira_habilitacao, 
                condutor_secundario.dias_dirige, condutor_secundario.reside_com_condutor 
                FROM condutor_secundario, veiculo, veiculo_has_condutor_secundario 
                WHERE condutor_secundario.id = veiculo_has_condutor_secundario.id_condutor_secundario 
                AND veiculo.id = veiculo_has_condutor_secundario.id_veiculo 
                AND veiculo_has_condutor_secundario.id_veiculo = $idVeiculo ;
            ");

            $condutorSecundario = array();
            $count = 0;

            foreach ($result as $value) {
                //Recupera valores dos seguros
                $condutorSecundario[$count] = new CondutorSecundario();
                $condutorSecundario[$count]->setIdCondutorSecundario($value['id']);
                $condutorSecundario[$count]->setRelacaoSecundario($value['relacao_segurado']);
                $condutorSecundario[$count]->setNome($value['nome']);
                $condutorSecundario[$count]->setCpf($value['cpf']);
                $condutorSecundario[$count]->setDataNascimento($value['data_nascimento']);
                $condutorSecundario[$count]->setEstadoCivil($value['estado_civil']);
                $condutorSecundario[$count]->setSexo($value['sexo']);
                $condutorSecundario[$count]->setDataPrimeiraHabilitacao($value['data_primeira_habilitacao']);
                $condutorSecundario[$count]->setDiasDirigi($value['dias_dirige']);
                $condutorSecundario[$count]->setResideCondutor($value['reside_com_condutor']);
                $count++;
            }

            $conn = $conexao->fecharConexao();
            return $condutorSecundario;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
        
    }
    
    public function excluirCondutorSecundario($idCondutorSecundario) {

        try {

            //Banco de dados
            $conexao = new Conexao();
            $conn = $conexao->abrirConexao();

            //Codigo SQL
            $excluir = "
                DELETE FROM veiculo_has_condutor_secundario WHERE id_condutor_secundario = ?
            ";
            
            $stmtProdutor = $conn->prepare($excluir);
            $stmtProdutor->bindValue(1, $idCondutorSecundario);
            $stmtProdutor->execute();
                        
            return true;
            
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }
    
}

?>
